This invention relates to improvement of the concurrent processing capability in log output for the purpose of ensuring durability of transactions in a management system of a relational database.
Development of devices has propelled increase in the number of cores integrated in a CPU mounted on a server and the capacity of a memory. As a result, in-memory databases are prevailing that deploy major data such as tables and indices of the relational database onto the memory.
For restoration of such an in-memory database at occurrence of a system failure, records of changes need to be outputted as logs to a storage device such as a hard disk or a flash memory.
In a conventional computer system expected to use a hard disk drive as a persistent device to record the logs, responding to a single I/O output take a high proportion of the processing time of a server that performs transaction processing. For this reason, instead of performing a log I/O output at each transaction, the server once stores a log to a log buffer area allocated in a memory and a log manager thread collectively outputs logs in the log buffer area to the persistent device sequentially and in time series. The persistent device is a non-volatile storage device for holding data persistently.
To efficiently share one log file among multiple transactions, US 2014/0208083 A discloses a technique that divides the log file into a plurality of slots having a common size; reserves, by a log manager, the slots for a plurality of threads in turn; and writes logs to the slots.